//用栈实现队列
import StackAndQuene.PersonalStack;


import java.util.ArrayList;

public class Stack {
    public void enquene(PersonalStack in,int num){//入队
        in.push(num);
    }
    public Integer dequene(PersonalStack in,PersonalStack out){//出队，出队复杂一些
        if(this.is_empty(in,out)){
            return null;//如果队为空
        }
        if (!out.is_empty()){//如果出队栈不为空，直接pop
            return out.pop();
        }else{//如果出队栈为空
            while (!in.is_empty()){
                out.push(in.pop());
            }
        }
        return out.pop();
    }
    public Integer peek(PersonalStack in,PersonalStack out){
        if(this.is_empty(in,out)){
            return null;//如果队为空
        }
        if (!out.is_empty()){//如果出队栈不为空，直接pop
            return  out.peek();
        }else{//如果出队栈为空
            while (!in.is_empty()){
                out.push(in.pop());
            }
        }
        return out.peek();
    }
    public boolean is_empty(PersonalStack in,PersonalStack out){//判断是否为空，暂时没有判断为满的情况
        if (in.is_empty()&&out.is_empty()){
            return true;
        }
        return false;
    }
    public boolean is_full(){//只有同时判断两个栈是否都满了才行,不对，是要判断两个加起来是否已经满了，如果超过了，第二个队列就装不下了
        return true;
    }
    public static void main(String[] args) {
        PersonalStack in = new PersonalStack(5);//输入栈
        var out = new PersonalStack(5);//输出栈
        var main = new Stack();
        int[] el = new int[]{1,2,3,4,5};
        for(int num:el){
            main.enquene(in,num);
        }
        main.is_empty(in,out);
        System.out.println(main.peek(in,out));
    }
}
